/**
 * 
 */
package nz.co.doherty.gwtpbreadcrumbs.client.gin;

import nz.co.doherty.gwtpbreadcrumbs.client.i8n.ClientConstants;
import nz.co.doherty.gwtpbreadcrumbs.client.ui.app.AppPresenter;
import nz.co.doherty.gwtpbreadcrumbs.client.ui.customers.CustomerCreatePresenter;
import nz.co.doherty.gwtpbreadcrumbs.client.ui.customers.CustomerInfoPresenter;
import nz.co.doherty.gwtpbreadcrumbs.client.ui.customers.CustomerListPresenter;
import nz.co.doherty.gwtpbreadcrumbs.client.ui.home.HomePresenter;
import nz.co.doherty.gwtpbreadcrumbs.client.ui.products.ProductCreatePresenter;
import nz.co.doherty.gwtpbreadcrumbs.client.ui.products.ProductInfoPresenter;
import nz.co.doherty.gwtpbreadcrumbs.client.ui.products.ProductListPresenter;

import com.google.gwt.inject.client.AsyncProvider;
import com.google.gwt.inject.client.GinModules;
import com.google.gwt.inject.client.Ginjector;
import com.google.inject.Provider;
import com.philbeaudoin.gwtp.dispatch.client.DispatchAsync;
import com.philbeaudoin.gwtp.dispatch.client.gin.DispatchAsyncModule;
import com.philbeaudoin.gwtp.mvp.client.EventBus;
import com.philbeaudoin.gwtp.mvp.client.proxy.PlaceManager;
import com.philbeaudoin.gwtp.mvp.client.proxy.ProxyFailureHandler;


@GinModules( { ClientPresenterModule.class, DispatchAsyncModule.class })
public interface ClientGinjector extends Ginjector {

	PlaceManager getPlaceManager();
	EventBus getEventBus();
	DispatchAsync getDispatcher();
	ProxyFailureHandler getProxyFailureHandler();

	ClientConstants getConstants();
	Provider<AppPresenter> getPagePresenter();
	AsyncProvider<HomePresenter> getHomePresenter();
	
	AsyncProvider<ProductListPresenter> getProductListPresenter();
	AsyncProvider<ProductInfoPresenter> getProductInfoPresenter();
	AsyncProvider<ProductCreatePresenter> getProductCreatePresenter();
	
	AsyncProvider<CustomerListPresenter> getCustomerListPresenter();
	AsyncProvider<CustomerInfoPresenter> getCustomerInfoPresenter();
	AsyncProvider<CustomerCreatePresenter> getCustomerCreatePresenter();	
}
